#include "arc.hpp"

void initArc(Arc &a, int valeur, bool verbose)
{
    a.valeur = valeur;
    a.dst = NULL;
    a.src = NULL;
}

void initArc(Arc &a, Noeud &src, Noeud &dst, int valeur, bool verbose)  {
    a.valeur = valeur;
    a.src = &src;
    a.dst = &dst;
}

void initArc(Arc &a, const Arc &copie, bool verbose) {
    a.valeur = copie.valeur;
    a.src = copie.src;
    a.dst = copie.dst;
}

void afficherArc(Arc &a, bool verbose) {
    cout << "\t" << valeurNoeud(*(a.src)) << "->" << valeurNoeud(*(a.dst)) << " : " << a.valeur <<  endl;
}

void copieArc(Arc &a, const Arc &copie, bool verbose) {
    testamentArc(a);
    initArc(a, copie);
}

int compArc(const Arc &a, const Arc &b, bool verbose){

    if(a.src->nom.compare(b.src->nom) == 0 && a.dst->nom.compare(b.dst->nom) == 0)
        return numeric_limits<int>::max();
    else
        return a.valeur - b.valeur;
}

int valeurArc (const Arc &a)
{
    return a.valeur;
}

string sourceArc (const Arc &a)
{
    return a.src->nom;
}

string destinationArc (const Arc &a)
{
    return a.dst->nom;
}

void testamentArc(Arc &a, bool verbose) {

    a.valeur = 0;
    a.src = NULL;
    a.dst = NULL;
}
